package org.openkanban.server.dao;

import java.util.List;

import org.openkanban.server.domain.Activity;
import org.openkanban.server.domain.Kanban;
import org.openkanban.shared.util.StatusCodes;

/**
 * activity data access object api
 */
public interface ActivityDao {
    Activity createActivity(Activity activity);

    StatusCodes removeActivity(Activity activity);

    Activity updateActivity(Activity activity);

    Activity getActivity(Long activityId);

    Activity getActivityByKanbanId(Long kanbanId);

    List<Activity> getAll();

    List<Activity> getAllByBoardId(Long parentBoardId);

    Kanban addKanbanToActivity(Long parentActivityId, Kanban newKanban);

    Kanban moveKanbanToActivity(Long parentActivityId, Long kanbanId);

    List<Activity> getActivityRange(Long boardId, Long beginActivityId, Long endActivityId);

}
